package Veterinaria.negocio;

import java.util.Collection;

import Veterinaria.dao.PersonaDAO;
import Veterinaria.excepcion.CodigoDuplicadoExcepcion;
import Veterinaria.excepcion.DAOExcepcion;
import Veterinaria.excepcion.ValidaApellidoExcepcion;
import Veterinaria.excepcion.ValidaNombreExcepcion;
import Veterinaria.modelo.Factura;
import Veterinaria.modelo.Persona;
import Veterinaria.modelo.Doctor;
import Veterinaria.modelo.Dueno;

public class GestionPersona {
	// obtener
	public Persona obtener(String codigo_persona) throws DAOExcepcion {
		PersonaDAO dao = new PersonaDAO();
		return dao.obtener(codigo_persona);
	}

	public Doctor obtenerDoctor(String codigo_persona) throws DAOExcepcion {
		PersonaDAO dao = new PersonaDAO();
		return dao.obtenerDoctor(codigo_persona);
	}

	public Dueno obtenerDueno(String codigo_persona) throws DAOExcepcion {
		PersonaDAO dao = new PersonaDAO();
		return dao.obtenerDueno(codigo_persona);
	}
	
	

	// Insertar
	public Doctor insertaDoctor(String codigo_persona, String nombre_persona,
			String apellido_persona, String tipo_persona, String email_persona,
			String direccion, String telefono_fijo, String telefono_celular,
			String ruc, String sexo, String estado, String iddoctor,
			String usuario_sistema, String password) throws DAOExcepcion, CodigoDuplicadoExcepcion {

		PersonaDAO dao = new PersonaDAO();
		Doctor vo = new Doctor();

		vo.setCodigo_persona(codigo_persona);
		vo.setNombre_persona(nombre_persona);
		vo.setApellido_persona(apellido_persona);
		vo.setTipo_persona(tipo_persona);
		vo.setEmail_persona(email_persona);
		vo.setDireccion(direccion);
		vo.setTelefono_fijo(telefono_fijo);
		vo.setTelefono_celular(telefono_celular);
		vo.setRuc(ruc);
		vo.setSexo(sexo);
		vo.setEstado(estado);
		vo.setCodigo_persona(iddoctor);
		vo.setUsuario_sistema(usuario_sistema);
		vo.setPassword(password);

		return dao.insertarDoctor(vo);

	}

	public Dueno insertaDueno(String codigo_persona, String nombre_persona,
			String apellido_persona, String tipo_persona, String email_persona,
			String direccion, String telefono_fijo, String telefono_celular,
			String ruc, String sexo, String estado, String iddueno,
			String imagen, String notas) throws DAOExcepcion, CodigoDuplicadoExcepcion, ValidaNombreExcepcion, ValidaApellidoExcepcion {

		PersonaDAO dao = new PersonaDAO();
		Dueno vo = new Dueno();
		vo.setCodigo_persona(codigo_persona);
		vo.setNombre_persona(nombre_persona);
		vo.setApellido_persona(apellido_persona);
		vo.setTipo_persona(tipo_persona);
		vo.setEmail_persona(email_persona);
		vo.setDireccion(direccion);
		vo.setTelefono_fijo(telefono_fijo);
		vo.setTelefono_celular(telefono_celular);
		vo.setRuc(ruc);
		vo.setSexo(sexo);
		vo.setEstado(estado);
		vo.setCodigo_persona(iddueno);
		vo.setImagen(imagen);
		vo.setNotas(notas);

		return dao.insertarDueno(vo);

	}

	// Eliminar
	public void EliminarDoctor(String iddoctor) throws DAOExcepcion {
		PersonaDAO dao = new PersonaDAO();
		dao.Eliminar(iddoctor);
	}

	public void EliminarDueno(String iddueno) throws DAOExcepcion {
		PersonaDAO dao = new PersonaDAO();
		dao.Eliminar(iddueno);
	}

	// Actualizar
	public Doctor actualizarDoctor(String codigo_persona,
			String nombre_persona, String apellido_persona,
			String tipo_persona, String email_persona, String direccion,
			String telefono_fijo, String telefono_celular, String ruc,
			String sexo, String estado, String iddoctor, String usuario_sistema,String password)
			throws DAOExcepcion {

		PersonaDAO dao = new PersonaDAO();

		Doctor vo = new Doctor();

		vo.setCodigo_persona(codigo_persona);
		vo.setNombre_persona(nombre_persona);
		vo.setApellido_persona(apellido_persona);
		vo.setTipo_persona(tipo_persona);
		vo.setEmail_persona(email_persona);
		vo.setDireccion(direccion);
		vo.setTelefono_fijo(telefono_fijo);
		vo.setTelefono_celular(telefono_celular);
		vo.setRuc(ruc);
		vo.setSexo(sexo);
		vo.setEstado(estado);
		vo.setCodigo_persona(iddoctor);
		vo.setUsuario_sistema(usuario_sistema);
		vo.setPassword(password);

		return dao.actualizarDoctor(vo);
	}

	public Dueno actualizarDueno(String codigo_persona, String nombre_persona,
			String apellido_persona, String tipo_persona, String email_persona,
			String direccion, String telefono_fijo, String telefono_celular,
			String ruc, String sexo, String estado, String iddueno,
			String imagenes, String notas) throws DAOExcepcion {

		PersonaDAO dao = new PersonaDAO();

		Dueno vo = new Dueno();

		vo.setCodigo_persona(codigo_persona);
		vo.setNombre_persona(nombre_persona);
		vo.setApellido_persona(apellido_persona);
		vo.setTipo_persona(tipo_persona);
		vo.setEmail_persona(email_persona);
		vo.setDireccion(direccion);
		vo.setTelefono_fijo(telefono_fijo);
		vo.setTelefono_celular(telefono_celular);
		vo.setRuc(ruc);
		vo.setSexo(sexo);
		vo.setEstado(estado);
		vo.setCodigo_persona(iddueno);
		vo.setImagen(imagenes);
		vo.setNotas(notas);

		return dao.actualizarDueno(vo);
	}

	public Collection<Doctor> listar() throws DAOExcepcion {
		PersonaDAO dao = new PersonaDAO();
		return dao.listar();
	}
	
	public Collection<Persona> obtenerPorNombreApellido(String nombre, String apellido, String ruc, String estado, String tipo) throws DAOExcepcion {
		PersonaDAO dao = new PersonaDAO();
		return dao.obtenerPorNombreApellido(nombre, apellido, ruc, estado, tipo);
	}
	
	public Collection<Persona> obtenerDoctorNombreApellido(String nombre, String apellido, String usuario, String ruc, String estado) throws DAOExcepcion {
		PersonaDAO dao = new PersonaDAO();
		return dao.obtenerDoctorNombreApellido(nombre, apellido, usuario, ruc, estado);
	}

	public Collection<Factura> listarfacurasdueno(String iddueno)
			throws DAOExcepcion {
		PersonaDAO dao = new PersonaDAO();
		return dao.listarfacturasdueno(iddueno);
	}
	public Collection<Dueno> ListaDuenoXNombre(String nombre)
			throws DAOExcepcion {
		PersonaDAO dao = new PersonaDAO();
		return dao.ListaDuenoXNombre(nombre);
	}
	public Collection<Doctor> ListaDoctorXNombre(String nombre)
			throws DAOExcepcion {
		PersonaDAO dao = new PersonaDAO();
		return dao.ListaDoctorXNombre(nombre);
	}	
	public Dueno GenerarCodigo() throws DAOExcepcion {
		PersonaDAO dao = new PersonaDAO();
		return dao.GenerarCodigo();
	}
	public Doctor GenerarCodigoDoctor() throws DAOExcepcion {
		PersonaDAO dao = new PersonaDAO();
		return dao.GenerarCodigoDoctor();
	}
	
	public Persona obtenerUsuario(String usuario, String password) throws DAOExcepcion {
		PersonaDAO dao = new PersonaDAO();
		return dao.obtenerUsuario(usuario, password);
	}
	
}
